// 引入axios二次封装
import request from '@/utils/request'
// 引入spu相关的接口类型
import type {SkuListModel, SkuInfoModel, SkuPageListModel} from '@/api/product/model/skuModel'

// 定义枚举类型的接口地址
enum Api {
  // 下架的接口地址
  CancelSale = '/admin/product/cancelSale',
  // 上架的接口地址
  OnSale = '/admin/product/onSale',
  // 根据skuId移除sku对象的接口地址
  DeleteSkuInfoBySkuId = '/admin/product/deleteSku',
  // 根据spuId获取sku对象数组的接口地址
  GetSkuListBySpuId = '/admin/product/findBySpuId',
  // 根据skuId获取sku对象的接口地址
  GetSkuInfoBySkuId = '/admin/product/getSkuById',
  // 根据关键词获取sku对象数组的接口地址
  GetSkuListByKeyword = '/admin/product/inner/findSkuInfoByKeyword',
  // 根据skuId数组获取对应的sku对象数组的接口地址
  GetSkuListBySkuIds = '/admin/product/inner/findSkuInfoBySkuIdList',
  // 获取包含分类sku对象数组列表的对象的接口地址
  GetSkuPageList = '/admin/product/list',
  // 新增sku对象的接口地址
  SaveSkuInfo = '/admin/product/saveSkuInfo',
  // 修改sku对象的接口地址
  UpdateSkuInfo = '/admin/product/updateSkuInfo',
}
// 下架的接口函数
export const cancelSaleApi = (skuId: number) => request.get<any, null>(Api.CancelSale + `/${skuId}`)
// 上架的接口函数
export const onSaleApi = (skuId: number) => request.get<any, null>(Api.OnSale + `/${skuId}`)
// 根据skuId移除sku对象的接口函数
export const deleteSkuInfoBySkuIdApi = (skuId: number) => request.delete<any, null>(Api.DeleteSkuInfoBySkuId + `/${skuId}`)
// 根据spuId获取sku对象数组的接口函数
export const getSkuListBySpuIdApi = (spuId: number) => request.get<any, SkuListModel>(Api.GetSkuListBySpuId + `/${spuId}`)
// 根据skuId获取sku对象的接口函数
export const getSkuInfoBySkuIdApi = (skuId: number) => request.get<any, SkuInfoModel>(Api.GetSkuInfoBySkuId + `/${skuId}`)
// 根据关键词获取sku对象数组的接口函数
export const getSkuListByKeywordApi = (keyword: string) => request.get<any, SkuListModel>(Api.GetSkuListByKeyword + `/${keyword}`)
// 根据skuId数组获取对应的sku对象数组的接口函数
export const getSkuListBySkuIdsApi = (skuIds: number[]) => request.post<any, SkuListModel>(Api.GetSkuListBySkuIds, skuIds)
// 获取包含分类sku对象数组列表的对象的接口函数
export const getSkuPageListApi = (page: number, limit: number) => request.get<any, SkuPageListModel>(Api.GetSkuPageList + `/${page}/${limit}`)
// 新增sku对象的接口函数
export const saveSkuInfoApi = (skuInfo: SkuInfoModel) => request.post<any, null>(Api.SaveSkuInfo, skuInfo)
// 修改sku对象的接口函数
export const updateSkuInfoApi = (skuInfo: SkuInfoModel) => request.post<any, null>(Api.UpdateSkuInfo, skuInfo)

// 新增/修改sku对象的接口函数
export const saveOrUpdateSkuInfoApi = (skuInfo: SkuInfoModel) => skuInfo.id ? updateSkuInfoApi(skuInfo) : saveSkuInfoApi(skuInfo)


